It is not uncommon to protect data via cryptography. Typically, cryptographic keys are used to encrypt and decrypt the data. Because the cryptographic keys provide means to protect the data and provide access to the protected data, the cryptographic keys also are protected. Unprotected cryptographic keys could open the door to various types of attacks, such as web site spoofing, impersonated authentications, and forged e-mails, for example.
One attempt to protect cryptographic keys is to store them on a smart card. A problem with this attempt however, is that smart cards require a dedicated infrastructure implemented on the processor with which the smart card will communicate. Typically, this infrastructure is implemented in the operating system of the processor, and thus can require considerable effort and time to implement. Also, smart cards require additional hardware in the form of a smart card reader, which can be bulky and expensive.
Another attempt to protect cryptographic keys is to store them within protected containers located on the processor. Typically, access to the keys is password protected. A problem with this attempt is that passwords protection is considered weak. An attacker gaining access to the processor could, via the use of a password cracker or the like, determine the password and gain access to the cryptographic keys stored in the container.